/**
 * \defgroup Gui Gui
 * \brief Gui classes.
 * 
 * A group with the purpose of grouping together all (mostly irrelevant for this purpose) Gui classes.
 * 
 * \file MainWindow.h
 * \brief Header for \a MainWindow class.
 * \ingroup Gui
 */

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include<QPushButton>
#include<QHBoxLayout>
#include<QVBoxLayout>
#include<QWidget>

class Log;
class MapDisplay;
class TurnSequenceWidget;

/**
 * \class MainWindow
 * \brief The main window for our application. (duh)
 * \ingroup Gui
 */

class MainWindow: public QWidget{
Q_OBJECT
public:
	MainWindow();///<Constructor
	~MainWindow();///<Destructor
	
	void setMapDisplay(MapDisplay *display);///<Adds the \a MapDisplay to the \a MainWindow.
private slots:
	void slotDoTurn();///<Called to have the \a MapDisplay perform a turn.
	void slotShowDistances();///<Called to show the distances for debug purposes.
	void slotHideDistances();///<Called to hide the distances for debug purposes.
private:
	Log *m_log;///<The \a Log. Text output can be done here.
	MapDisplay *m_display;///<The \a MapDisplay, that's the widget that does the actual visualization.
	
	QWidget *m_buttonWidget;///<Gui stuff.
	QHBoxLayout *m_buttonLayout;///<Gui stuff.
	QPushButton *m_turnButton;///<Gui stuff.
	QPushButton *m_distanceButton;///<Gui stuff.
	TurnSequenceWidget *m_turnSequence;///<Gui stuff. Takes care of displaying whose turn it is.
	QVBoxLayout *m_layout;///<Gui stuff.
	
	QWidget *m_widget;///<Gui stuff.
	QHBoxLayout *m_outerLayout;///<Gui stuff.
};

#endif
